###############################################
# RUNTIME OPTIONS                             #
###############################################

# user to run daemon as (default is mfs)
# WORKING_USER = mfs

# group to run daemon as (optional - if empty then default user group will be used)
# WORKING_GROUP = mfs

# name of process to place in syslog messages (default is mfsmaster)
# SYSLOG_IDENT = mfsmaster

# whether to perform mlockall() to avoid swapping out mfsmaster process (default is 0, i.e. no)
# LOCK_MEMORY = 0

# Linux only: limit malloc arenas to given value - prevents server from using huge amount of virtual memory (default is 4)
# LIMIT_GLIBC_MALLOC_ARENAS = 4

# Linux only: disable out of memory killer (default is 1)
# DISABLE_OOM_KILLER = 1

# nice level to run daemon with (default is -19; note: process must be started as root to increase priority, if setting of priority fails, process retains the nice level it started with)
# NICE_LEVEL = -19

# set default umask for group and others (user has always 0, default is 027 - block write for group and block all for others)
# FILE_UMASK = 027

# where to store daemon lock file (default is /var/lib/mfs)
# DATA_PATH = /var/lib/mfs

# alternate location/name of mfsexports.cfg file (default is /etc/mfs/mfsexports.cfg)
# EXPORTS_FILENAME = /etc/mfs/mfsexports.cfg

# alternate location/name of mfstopology.cfg file (default is /etc/mfs/mfstopology.cfg)
# TOPOLOGY_FILENAME = /etc/mfs/mfstopology.cfg

# number of metadata change log files (default is 50)
# BACK_LOGS = 50

# how often master will store metadata (hours - default is 1)
# METADATA_SAVE_FREQ = 1


# number of previous metadata files to be kept (default is 1)
# BACK_META_KEEP_PREVIOUS = 1

# how many seconds of change logs have to be preserved in memory (default is 1800; this sets the minimum, actual number may be a bit bigger
# due to logs being kept in 5k blocks; zero disables extra logs storage)
# CHANGELOG_PRESERVE_SECONDS = 1800

# Changelog save mode. There are three modes of writing changelogs:
# 0 - write in background by different process (less safe, but doesn't make master stop in case of heavy hdd load)
# 1 - write in foreground without syncing data (master waits for every changelog to be saved to hdd, but without syncing - a little more safe than the background option, but may cause master to stop and wait for flushing hdd buffers)
# 2 - write in foreground with fsync after each write (very safe, but may make your master very slow unless you have very sophisticated hardware)
# CHANGELOG_SAVE_MODE = 0

# how many missing chunks will be stored in master (up to 100*MISSING_LOG_CAPACITY bytes of memory will be allocated)
# MISSING_LOG_CAPACITY = 100000


###############################################
# COMMAND CONNECTION OPTIONS                  #
###############################################

# IP address to listen on for metalogger, masters and supervisors connections (* means any)
# MATOML_LISTEN_HOST = *

# port to listen on for metalogger, masters and supervisors connections (default is 9419)
# MATOML_LISTEN_PORT = 9419


###############################################
# CHUNKSERVER CONNECTION OPTIONS              #
###############################################

# IP address to listen on for chunkservers connections (* means any)
# MATOCS_LISTEN_HOST = *

# port to listen on for chunkserver connections (default is 9420)
# MATOCS_LISTEN_PORT = 9420

# default timeout in seconds for master-chunkserver connection (default is 10)
# MATOCS_TIMEOUT = 10

# Optional authentication string. When defined - then only chunkservers with the same AUTH_CODE are allowed to connect to this master. When not defined (default) - then all chunkservers are allowed.
# If you want to switch on chunkserver authentication, then first define AUTH_CODE in all your chunkservers (and reload/restart them) then uncomment this option and reload/restart master
# After reload currently connected chunkservers are NOT disconnected. New AUTH_CODE will be used when chunkservers will make new connection.
# AUTH_CODE = mfspassword

# Optional IP class remapping. If you want to use class A for communication with master and class B for I/O (communication with chunkservers) then define class A as REMAP_SOURCE_IP_CLASS and class B as REMAP_DESTINATION_IP_CLASS.
# You must also define REMAP_BITS which means how many of first bits of class A should be changed to bits from class B. All chunkserver IP numbers that are not in class A will stay unchanged.
# REMAP_BITS = 24
# REMAP_SOURCE_IP_CLASS = 192.168.1.0
# REMAP_DESTINATION_IP_CLASS = 10.0.0.0

###############################################
# CHUNKSERVER WORKING OPTIONS                 #
###############################################

# initial delay in seconds before starting replications (default is 60)
# REPLICATIONS_DELAY_INIT = 60

# whether to make undergoal replications respect topology (default is 0)
# 0 - do not respect topology
# 1 - pick destination server at random, but then choose best source server
# 2 - try to find destination server in the same rack as one of the existing copies and then replicate chunk locally (in the same rack)
# REPLICATIONS_RESPECT_TOPOLOGY = 0

# whether new chunks should be recorded with respect to topology (default is 0)
# 0 - do not respect topology
# N (N>0) - first try to create new chunks on servers with topological distance LOWER than N from the client; if not possible, for example because of storage class, chunk servers being busy or lacking space, then try servers with distance greater or equal to N
# CREATIONS_RESPECT_TOPOLOGY = 0

# avoid using same ip/rack for different chunk copies
# 0 - ignore ip and rackid (standard behaviour)
# 1 - avoid storing more than one copy on chunkservers using same IP number
# 2 - avoid storing more than one copy on chunkservers using IP number from the same rack id
# CHUNKS_UNIQUE_MODE = 0

# Chunks loop shouldn't check more chunks per seconds than given number (default is 100000)
# CHUNKS_LOOP_MAX_CPS = 100000

# Chunks loop shouldn't be done in less seconds than given number (default is 300)
# CHUNKS_LOOP_MIN_TIME = 300

# Soft maximum number of chunks to delete on one chunkserver (default is 10)
# CHUNKS_SOFT_DEL_LIMIT = 10

# Hard maximum number of chunks to delete on one chunkserver (default is 25)
# CHUNKS_HARD_DEL_LIMIT = 25

# Maximum number of chunks to replicate to one chunkserver (default is 2,1,1,4)
# one number is equal to four same numbers separated by colons
#  first limit is for endangered chunks (chunks with only one copy)
#  second limit is for undergoal chunks (chunks with number of copies lower than specified goal)
#  third limit is for rebalance between servers with space usage around arithmetic mean
#  fourth limit is for rebalance between other servers (very low or very high space usage)
# usually first number should be grater than or equal to second, second greater than or equal to third, and fourth greater than or equal to third ( 1st >= 2nd >= 3rd <= 4th )
# CHUNKS_WRITE_REP_LIMIT = 2,1,1,4

# Maximum number of chunks to replicate from one chunkserver (default is 10,5,2,5)
# one number is equal to four same numbers separated by colons
# limit groups are the same as in write limit, also relations between numbers should be the same as in write limits ( 1st >= 2nd >= 3rd <= 4th )
# CHUNKS_READ_REP_LIMIT = 10,5,2,5

# Threshold for chunkserver load (default is 150)
# CS_HEAVY_LOAD_THRESHOLD = 150

# Threshold ratio for chunkserver load (default is 3.0, Whenever chunkserver load is higher than previously specified threshold and this ratio times higher than average load, then chunkserver is switched into 'grace' mode)
# CS_HEAVY_LOAD_RATIO_THRESHOLD = 3.0

# Defines how long chunkservers will remain in 'grace' mode (in seconds)
# CS_HEAVY_LOAD_GRACE_PERIOD = 900

# Maximum difference between space usage of chunkservers in percentage points (default is 1.0 ; valid values: 0.1 - 10.0)
# Deprecates: ACCEPTABLE_DIFFERENCE (ACCEPTABLE_PERCENTAGE_DIFFERENCE = ACCEPTABLE_DIFFERENCE * 100.0)
# ACCEPTABLE_PERCENTAGE_DIFFERENCE = 1.0

# Length of priority queues (for endangered, undergoal etc. chunks - chunks that should be processed first - default value is 1000000).
# PRIORITY_QUEUES_LENGTH = 1000000

# Maximum number of seconds server can be in maintenance mode (default value is 0 - which means 'forever').
# CS_MAINTENANCE_MODE_TIMEOUT = 0

# Maximum number of seconds server can be in "temporary" maintenance mode (server is switched to this mode whenever is stopped gracefully, after reconnection server is switched back to normal mode automatically ; default value: 1800)
# CS_TEMP_MAINTENANCE_MODE_TIMEOUT = 1800

# How many days unused (disconnected) chunkserver should be kept in master data structures (valid values: 0 - 365 ; 0 means indefinitely ; default value is 7)
# CS_DAYS_TO_REMOVE_UNUSED = 7

###############################################
# CLIENTS CONNECTION OPTIONS                  #
###############################################

# IP address to listen on for client (mount) connections (* means any)
# MATOCL_LISTEN_HOST = *

# port to listen on for client (mount) connections (default is 9421)
# MATOCL_LISTEN_PORT = 9421

###############################################
# CLIENTS WORKING OPTIONS                     #
###############################################

# How long to sustain a disconnected client session (in seconds; default is 86400 = 1 day)
# SESSION_SUSTAIN_TIME = 86400

###############################################
# FILE SYSTEM OPTIONS                         #
###############################################

# Default grace period in seconds for soft quota (default is 604800 - 7 days)
# Deprecates: QUOTA_TIME_LIMIT
# QUOTA_DEFAULT_GRACE_PERIOD = 604800

# Mode of atime modification (default is 0 - always modify atime during access)
# All modes:
#  0 - Always modify atime for files, folders and symlinks.
#  1 - Always modify atime but only in case of files (do not modify atime in case of folders and symlinks).
#  2 - Modify atime only when it is lower than ctime or mtime and when current time is higher than ctime or mtime respectively, also modify atime when current atime is older than 24h. Do it for all objects during access (like "relatime" option in Linux).
#  3 - Same as above but only in case of files. In case of folders and symlinks do not modify atime.
#  4 - Never modify atime during access (like "noatime" option).
# ATIME_MODE = 0

# Define amount of space reserved for superuser only (default is 0)
#  #B or #    - amount defined in bytes (you can use metric prefixes - SI and IEC binary prefixes)
#  #% or #.#% - amount defined as a percent of total space
#  #U or #.#U - amount in multiplies of 'max bytes currently used by one of chunkservers'
#  #C or #.#C - amount in multiplies of 'max total bytes of chunkserver - the highest capacity of one chunkserver'
# RESERVE_SPACE = 0

# Define limit for number of hardlinks allowed for one object.
# Minimum value is 8 (required by POSIX) and maximum value is 65000 (same as in ext4 on Linux). Default value is 32767.
# MAX_ALLOWED_HARD_LINKS = 32767
